home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Rewrite 0.2.6 / ReWrite 0.2.6 Docs / ReWrite 0.2.6 Docs.rsrc / TEXT_144.txt < prev    next >
Encoding:
Text File  |  1995-08-23  |  4.0 KB  |  88 lines

  1.  
  2. Appendix 8 - Future Versions
  3.  
  4. (Alternate heading - Roy's "Wish List")
  5.  
  6. This section indicates what is planned to go into future versions of ReWrite. These plans are subject to change (feedback helps), and there is no timetable of when future versions are released, as it depends on my workload and my level of interest (again feedback may help the latter).
  7.  
  8. Note that well written (not doing anything silly with the types) source code will have nearly compatible source code with future versions, but that object code will not be compatible - recompiling will be necessary.
  9.  
  10. ReWrite 0.3
  11.  
  12. ‚Ä¢ More unstructured types
  13.   - short integers (16 bit)
  14.   - reals
  15.  
  16. ‚Ä¢ A module/project structure
  17.    In the current version, there is a big list of function names that can't be used because they are used by the compiler. I hope to change the current model of one project, all linked together, to another model where each module specifies what modules it needs, and the compiler is just another module that doesn't step on anything else.
  18.    At the moment there is a primitive module structure, but this will not be retained, so is undocumented.
  19.    Included in this update will be ways of specifying in which order rules are checked.
  20.  
  21. ‚Ä¢ Macro's
  22.    The current project supports macro's, but they are clumsy, and so undocumented.
  23.  
  24. ‚Ä¢ New higher level functions
  25.    Map, Apply, Fold,Select etc.
  26.  
  27. ‚Ä¢ Access to intermediate code
  28.    Again, the current project supports access to the intermediate code for low level functions and very fast programming, but this is currently full of holes, and the language is not even well defined, so is again undocumented.
  29.    This will require:
  30.   - a well defined intermediate language;
  31.   - a better register allocator (the current one cannot handle backward branches).
  32.  
  33. ‚Ä¢ A smaller, much faster compiler
  34.    This should result from some of the other improvements being discussed.
  35.  
  36. ‚Ä¢ More functions
  37.    For example, file handling and other I/O.
  38.  
  39. ‚Ä¢ Some internal improvements
  40.  
  41.   - function call optimisation
  42.    Functions that are internal to a module need not use the full calling conventions; for example parameters could be passed in registers to hidden functions.
  43.  
  44.   - a better register allocator
  45.    Dealing with backward branches is required.
  46.  
  47.   - a better memory manager
  48.    At the moment, cells greater than 40 bytes aren't allowed - I have the code to deal with this problem, it's just a matter of converting it from assembly to intermediate form.
  49.  
  50.   - better machine code
  51.    This includes some low-level optimisation.
  52.  
  53. ReWrite 0.4+
  54.  
  55. ‚Ä¢ More structured types
  56.   - arrays
  57.   - strings
  58.   - records
  59.   - graphs - this will really make optimisation code easier.
  60.   - arbitrary sized integers
  61.    There is much efficiency to be gained by using specialised structures rather than lists.
  62.  
  63. ‚Ä¢ FPU Support (maybe)
  64. (If I ever get an FPU - on the other hand, look at all those applications that broke when the PowerMac came out)
  65.  
  66. ‚Ä¢ A full Input/Output library
  67.   - Use of a GUI interface from inside ReWrite.
  68.  
  69. ‚Ä¢ Some sort of object-like structure
  70.    This will not be the standard objects as found is Object Oriented Pascal - it will be something having many of the same properties, but designed for this environment.
  71.  
  72. ‚Ä¢ A new user interface
  73. This would be written in ReWrite, so the whole application is written entirely in ReWrite. This will avoid some of the current limitations imposed by Pascal and TextEdit.
  74.  
  75. ‚Ä¢ A debugging environment
  76.  
  77. ‚Ä¢ Port it to other machines (particularly a PowerMac)
  78.    At the moment, ReWrite is a 'spare time' project, so it will only be developed on machines that I own (that is why a Classic was used until recently), so while it is designed to be easy to port, it will probably not happen until I upgrade my machine again, and since I have just done that, this will be a while away.
  79.  
  80. ‚Ä¢ Internal improvements
  81.  
  82.   - everything fully relocatable
  83.    This allows easy memory compaction, and since everything would need to be able to be tracked down, multitasking on the same memory space becomes easy.
  84.  
  85.   - control/data flow optimization
  86.    Big improvements to code speed can be made here.
  87.  
  88.